package ro;

import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

import com.developpez.adiguba.shell.ProcessConsumer;
import com.developpez.adiguba.shell.Shell;

public final class DisplayG extends JFrame {
	/**
	 * le nom de l'image
	 */
	String imageStr;
	/**
	 * L'image
	 */
	Image img;

	/**
	 * Le chemin vers l'image
	 */
	String path;



	/**
	 * Affiche l'image ou bien la rafraichit si elle est dÃ©jÃ  affichÃ©e
	 * en faisant appel Ã  la mÃ©thode paint
	 */
	void loadImage(){
		try {
		File f=new File(path+imageStr);
		if(!f.exists()){
			System.out.println("File not found"+f.getAbsolutePath());
		}
		this.img=ImageIO.read(f);
		this.setSize(img.getWidth(this),img.getHeight(this)+25);
		this.repaint();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


	/**
	 * @param image: le nom du fichier image
	 * @param path: le chemin du fichier image
	 */
	public DisplayG(String image, String path){
       setTitle(image);
       this.path = path;
       this.imageStr=image;
       this.loadImage();
       this.setVisible(true);
       this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}


    @Override
	public void paint(Graphics g){
		super.paint(g);
		g.drawImage(img, 0,25, null);
	}


    public static void displayGraph(String path, String fileName){
	// conversion du .dot en fichier .gif
    // changer si nŽcessaire le chemin "/opt/local/bin/dot" 	
	String cmd = "/usr/bin/dot -Tgif " + fileName + " -o "+ fileName.replace(".dot", ".gif");
	Shell sh = new Shell("/bin/bash", "-c");
	 File file=new File(path);
	 	sh.setDirectory(file);
	 	ProcessConsumer pc= sh.command(cmd);
	 	try {
		pc.consume();
	} catch (IOException e) {
		e.printStackTrace();
	}
	// Chargement de l'image
	DisplayG img = new DisplayG(fileName.replace(".dot", ".gif"), path);
	img.loadImage();   		
}

}
